import org.junit.Test;

import java.io.File;

/**
 * 非规律类递归实现文件查询功能
 */
public class SearchFile {
    public static void main(String[] args) {
//        search(new File("E:/"),"Hadoop实训测试.md");
        System.out.println(monkey(1));
    }
    /**
    *方法参数为查询的指定目录下和文件名 要求最后输出指定文件的绝对路径
    *首先判断参数是否为目录，将目录转化为一个file数组
    *判断数据内容是否为空
    *遍历数组
    *如果是目录就递归执行本方法
    *如果是文件就判断是否含有文件名 
    *最后打印出文件的位置 并停止遍历
    */
    public static void search(File dir,String FileName){
        //如果dir是目录
        if (dir!=null&&dir.isDirectory()){
            File[] files=dir.listFiles();
            if (files!=null) {
                for (File file : files) {
                    if (file.isFile()) {
                        if (file.getName().contains(FileName)) {
                            System.out.println(file.getAbsolutePath());
                        }
                    } else {
                        search(file, FileName);
                    }
                }
            }
        }else{
            System.out.println("空");
            throw new NullPointerException();
        }
    }
    //尝试使用递归解决猴子吃桃问题
    //公式为f（10）=1；

    /**
     * f(n+1)=f(n)/2-1;
     * 2(fn+1)=f(n)-2;
     * f(n)=2(fn+1)+2;
     */
    public static int monkey(int num){
        if (num==10){
            return 1;
        }else{
            return 2*(monkey(num+1))+2;
        }
    }
    //前一天的桃子数量等于2（x+1）;
    @Test
    public  void monkey(){
        int day=10;
        int sum=1;
        while (day!=1){
            sum=2*(sum+1);
            day--;
        }
        System.err.println(sum);;
    }

}
